// 导入数据库操作模块
const db = require('../db/index')
// 导入 bcryptjs 包
const bcrypt = require('bcryptjs')
// 导入生成 Token 的包
const jwt = require('jsonwebtoken')
// 导入全局的配置文件
const config = require('../config/config')



// 小程序登录操作
exports.login = (req, res) => {
  // 获取客户端提交到服务器的用户信息
  const userInfo = req.body
  // 生成token
  const user = { ...userInfo, session_key: '' }
  const tokenStr = jwt.sign(user, config.jwtSecretKey, { expiresIn: config.expiresIn })

  // 定义 SQL 语句，查询用户名是否被占用
  const sqlStr = `select * from user_info where openid=?`;
  db.query(sqlStr, userInfo.openid, (err, results) => {
    // 执行 SQL 语句失败
    if (err) {
      return res.cc(err)
    }
    // 判断用户名是否被占用
    if (results.length > 0) {
      // 调用 res.send() 将 Token 响应给客户端
      return res.send({
        status: 0,
        message: '登录成功!',
        token: 'Bearer ' + tokenStr
      })
    }
    // 定义插入新用户的 SQL 语句
    const sql = 'insert into user_info set ?'
    // 调用 db.query() 执行 SQL 语句
    db.query(sql, { openid: userInfo.openid, session_key: userInfo.session_key, unionid: userInfo.unionid }, (err, results) => {
      // 判断 SQL 是否执行成功
      if (err) return res.cc(err)
      // 判断影响行数是否大于0
      // if (results.affectedRows === 0) return res.send({ status: 1, message: '注册用户失败，请稍后再试!' })
      if (results.affectedRows === 0) return res.cc('登录失败，请稍后再试!')
      // 注册用户成功
      res.send({
        status: 0,
        message: '登录成功!',
        token: 'Bearer ' + tokenStr
      })
    })
  })
}